如何使用MATLAB对任意三维数据绘制三维曲面 |
您所在的位置:网站首页 › matlab 三维曲面图 › 如何使用MATLAB对任意三维数据绘制三维曲面 |
这段时间写论文,用到MATLAB绘制三维曲面,而由于三组数据是同样维度,不能直接使用mesh或者surf等绘图命令进行绘图,这时候怎么办呢? 方法:将两组数据运用拟合的方法得到关于第三组数据的回归方程,通过回归方程和meshgrid扩充数据点。 工具:Matlab2011a 实例: (1)数据列: K/NM/°C/NMS/°At/NM100.1128200.2260300.3393400.4531500.5672600.6815700.795480.270.81102900.9125110011406(2)绘制K_C_At之间的三维曲面 (3)步骤: 1)直接在matlab的command窗口导入数据 2)编写m.文件 源文件如下: %%************Three Dimensional**************%% %%输入数据 %%刚度K,阻尼C与扭簧峰值差Pt间的三维曲面 %x1:输入刚度K,单位NM/° %x2:输入阻尼C,单位NMS/° %y :扭簧振幅差Pt %%******************************************* x1=data(:,1);%c数据列 x2=data(:,2);%k数据列 y=data(:,3);%At数据列 %%******************************************** %将多元分线性回归转化为线性回归方程求解 X=[ones(size(x1)) x1.*x1 x1 x2.*x2 x2 x1.*x2]; [b,bint,r,rint,stats]=regress(y,X,0.05); b %三维散点图分布 scatter3(x1,x2,y,'filled') hold on; %%********************************************* %数据差值 x1fit=10:1:109; x2fit=0.1:0.009:1; %%********************************************** [xi,yi]=meshgrid(x1fit,x2fit); %非线性拟合方程 zi=b(1)+b(2)*xi.*xi+b(3)*xi+b(4)*yi.*yi+b(5)*yi+b(6)*xi.*yi; %绘制三维曲面 meshc(xi,yi,zi); hold on; %调整视角 % view(140,30) %%************************************************ %加注坐标 xlabel('stiffness/(NM/°)');ylabel('damping/(NMS/°)'); zlabel('amplitude of aberration with torque/(NM)'); figure(2) %残差分析 rcoplot(r,rint); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |